// src/utils/axios.js
import axios from 'axios';
import { Message as ElMessage } from '@arco-design/web-vue';
import base from '@/base-env'
// 添加这个时间错设置
let time = new Date().getTime();
 // 创建 axios 实例
const instance = axios.create({
    baseURL: base.baseUrl, // 基础 URL
    timeout: 1000, // 超时时间（毫秒）
    headers: {
        'Content-Type': 'application/json',
    },
    params: {
        time
     }
});


// 请求拦截器
instance.interceptors.request.use(
    (config) => {
        // 检查是否是登录请求
        const isLoginRequest = config.url === '/login';
        if (!isLoginRequest) {
            // 如果不是登录请求，则需要添加 token 到请求头
            const token = localStorage.getItem('token');
            if (!token) {
                // 如果没有 token，提示用户并阻止请求继续发送
                // ElMessage.error('未登录，请先登录');
                return Promise.reject(new Error('未登录,请先登录')); // 阻止请求继续发送
            }
            config.headers.Authorization = `Bearer ${token}`;
        }
         return config;
    },
    (error) => {
        // 处理请求错误
        console.error('请求错误：', error);
        return Promise.reject(error);
    }
);

// 响应拦截器
instance.interceptors.response.use(
    (response) => {
        // 对响应数据做些什么
         return response.data; // 直接返回响应体中的数据
    },
    (error) => {
        if (error.response) {
            // 响应已收到，但状态码不在 2xx 范围内
            const status = error.response.status;
            switch (status) {
                case 400:
                    ElMessage.error('请求参数错误');
                    break;
                case 401:
                    ElMessage.error('未授权，请重新登录');
                    // 跳转到登录页面
                    window.location.href = '/login';
                    break;
                case 403:
                    ElMessage.error('权限不足，请联系管理员');
                    break;
                case 404:
                    ElMessage.error('请求的资源不存在');
                    break;
                case 500:
                    ElMessage.error('服务器内部错误，请稍后重试');
                    break;
                default:
                    ElMessage.error(`HTTP 错误：${status}`);
                    break;
            }
        } else if (error.request) {
            // 请求已发送，但未收到响应
            ElMessage.error('网络连接超时，请检查网络设置');
        } else {
            // 其他错误
            ElMessage.error('请求失败：' + error.message);
        }
        return Promise.reject(error); // 返回错误以便调用方进一步处理
    }
);

export default instance;
